package com.sf.config;

import org.litepal.LitePalApplication;
import org.litepal.tablemanager.Connector;

import com.sf.utils.UtilsLog;

import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.SystemProperties;
import android.telephony.TelephonyManager;

public class PdaApp extends LitePalApplication  {
	private static PdaApp mInstance = null;
	private SQLiteDatabase database;
	
	static final byte START = 7;
	static final byte END = 14;

	@Override
	public void onCreate() {
		super.onCreate();
		mInstance = this;
		if (database == null) {
			database = Connector.getDatabase();
		}
	}

	public static PdaApp getInstance() {
		return mInstance;
	}

	/**
	 * 获取机器的imei号码
	 * 
	 * @param context
	 * @return
	 */
	public static String GetImeiNum(Context context) {
		String imei = ((TelephonyManager) context
				.getSystemService(TELEPHONY_SERVICE)).getDeviceId();
		return imei;
	}

	/***
	 * 获取机器的SN号码
	 */
	public static String getDeviceSN(Context context) {
		/*************************************************/
		/* 95E的设备无法获取设备SN号 */
		/* 获取设备的SN号 */
		/* 由于SN嵌入在IMEI中，位置固定，长度固定 */
		/* 所以可以直接使用IMEI来截出IMEI */
		/************************************************/
		TelephonyManager tm = (TelephonyManager) context
				.getSystemService(Context.TELEPHONY_SERVICE);
		String imei = tm.getDeviceId();
		if (imei != null && !imei.equals("")) {
			imei = imei.substring(START, END);
			return imei;
		} else {
			return "";
		}
	}
	
	/**
	 * 获取网络状态
	 * 
	 * @param context
	 *            1.在activity中用this. 2.getApplicationContext(). 建议使用第二个
	 */
	public static boolean GetNetworkState(Context context) {
		// 获得手机所有连接管理对象（包括对wi-fi等连接的管理）
		try {
			ConnectivityManager connectivity = (ConnectivityManager) context
					.getSystemService(Context.CONNECTIVITY_SERVICE);
			if (connectivity != null) {
				// 获得网络连接管理的对象
				NetworkInfo info = connectivity.getActiveNetworkInfo();
				if (info != null && info.isConnected()) {
					// 判断当前网络是否已连接
					if (info.getState() == NetworkInfo.State.CONNECTED)
						;
					return true;
				}
			}
		} catch (Exception e) {
		}
		return false;
	}

	/**
	 * 简单获取是否是iData设备标志
	 * 
	 * @Title: checkiDataDevice
	 * @param @param context
	 * @param @return 设定文件
	 * @return boolean 返回类型
	 * @throws
	 */
	public static boolean checkiDataDevice(Context context) {
		// 增加iData设备控制
		String ss4 = SystemProperties.get("persist.idata.app.code", "");
		// 获取设备型号

		if (ss4.equals("www.idatachina.com")) {
			return true;
		} else {
			return false;
		}

	}

	/**
	 * 获取设备型号
	 * 
	 * @Title: GetDeviceName
	 * @param @return 设定文件
	 * @return String 返回类型
	 * @throws
	 */
	public static String GetDeviceName() {
		// 获取设备型号
		String ss = SystemProperties.get("persist.idata.device.code", "");
		UtilsLog.e("ss", ss);
		if (ss.equals("ZH188V100")) {
			// dev_num = 1;//95
			// port_dev="/dev/ttyMT0";
			return "iData95";
		} else if (ss.equals("BW189V100")) {
			// dev_num = 2; //95E
			// port_dev="/dev/ttyHS1";
			return "iData95E";
		} else if (ss.equals("SF186V100")) {
			// dev_num = 3;
			// port_dev="/dev/ttyS1";//70
			return "iData70";
		} else if (ss.equals("KB188V100")) {
			// dev_num = 4;
			// port_dev="/dev/ttyMT1";//95w
			return "iData95w";
		} else {
			// dev_num = 1;
			// port_dev="/dev/ttyMT0";
			return "非iData设备";
		}
	}

	/**
	 * 退出iScan软件，如果程序调用了jar包进行扫描，即可退出iScan，不然会有影响
	 * 
	 * @Title: exitiScanTool
	 * @param @param context 设定文件
	 * @return void 返回类型
	 * @throws
	 */
	public static void exitiScanTool(Context context) {
		Intent localIntent = new Intent();
		localIntent.setAction("com.android.iScan.antoExit");
		localIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.getApplicationContext().sendBroadcast(localIntent);
	}
	
}
